package com.heatup.apt.common.dao;

import com.baomidou.mybatisplus.mapper.AutoMapper;
import com.heatup.apt.model.api.course.CourseCoachDetailResultModel;
import com.heatup.apt.model.course.CoursePrivteFeeVO;
import com.heatup.apt.model.course.CourseSign;
import com.heatup.apt.model.course.CourseSignDetailModel;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;
import org.springframework.stereotype.Component;

import java.util.Date;
import java.util.List;
import java.util.Map;


/**
 *
 * CourseSign 表数据库控制层接口
 *
 */
@Component
public interface CourseSignMapper extends AutoMapper<CourseSign> {

    /**
     * 根据用户id 课程id查询用户课程信息
     */
    List<Map<String, Object>> queryUserCourseInfo(@Param("user_id") Integer userId, @Param("course_id") Integer courseId, @Param("isclose") Integer isclose, @Param("order_id") Integer  orderId);


    /**
     * 销课
     *
     * @param storeId   门店地址
     * @param closeTime 销课时间
     * @return
     */
    @Update({
            "UPDATE course_sign SET store_id=#{store_id}, close_time=#{close_time}, start_time=#{start_time}, isclose=1 where id=#{id}"
    })
    Integer closeCourse(@Param("id") Integer id, @Param("store_id") Integer storeId, @Param("close_time") Date closeTime, @Param("start_time") Date startTime);

    /**
     * 教练端 课程详情
     *  @param courseId 课程ID
     * @param mobile   教练手机  @return
     */
    CourseCoachDetailResultModel queryCoachCourseInfo(@Param("courseId") Integer courseId, @Param("mobile") String mobile);

    /**
     * 教练端 课程签到总计
     *
     * @param courseId     课程ID
     * @param courseNumber 课时序号
     * @param mobile       教练手机
     * @return 课程签到总计
     */
    int queryCoachCourseSignInCount(@Param("courseId") Integer courseId, @Param("courseNumber") int courseNumber, @Param("mobile") String mobile);

    /**
     * 根据实体查询签到
     *
     * @param courseSign
     * @return
     */
    CourseSign selectByCourseSign(CourseSign courseSign);

    /**
     * 统计私教费用明细
     * @param param
     * @return
     */
    List<CoursePrivteFeeVO> queryPrivateCoachFee(Map<String, Object> param);

    /**
     * 查询已销课数据
     *
     * @param orderId 订单 ID
     * @return 已销课数据列表
     */
    List<CourseSignDetailModel> selectSignDetailWithStoreNameByOrderId(@Param("orderId") int orderId);
    
    List<CourseSign> queryCourseSignByOrderId(Integer orderId);
    
    /**
     * 获取私教课程的开始和结束时间 
     * 私教课程： 取销课第一条 的开始时间 再取 销课最后一条的结束时间 拼接起来
     * @param orderId
     * @param userId
     * @return
     */
    String getPtCourseStartTimeAndEndTimeByOrderId(Integer orderId);
}